#include <iostream>
using std::cout;
using std::endl;

#define PI 3.14

template <class T>
T multiply(T x,T y,int kBase){
	return x * y * kBase;
}

//kBase和T都是模板参数
//T是类型参数，实例化成具体的类型
//kBase是非类型参数，实例化成一个具体的int型的数据
//
//非类型参数必须是整型
template <class T = int,int kBase = 10>
T multiply(T x, T y){
	return x * y * kBase;
}

void test0(){
    cout << multiply(1.4,1.4,10) << endl;

    //使用了第二个函数模板
    //T推导出double,kBase使用了默认值10
    cout << multiply(1.5,1.5) << endl;

    //类型参数的实例化
    //指定 > 推导 > 默认值
    cout << multiply<int,10>(1.5,1.5) << endl;

    cout << multiply(PI,4.0) << endl;

}

int main(void){
    test0();
    return 0;
}
